import pandas as pd
from text_processing import process_and_save_comments, load_cleaned_texts
from wordcloud_generator import generate_wordcloud_from_file, get_font_path
from lda_analysis import analyze_lda_from_file
import os
from sklearn.feature_extraction.text import TfidfVectorizer
from functools import partial
# 配置参数
file_path = '/Users/xuduo/python实验/DMSC.csv'
output_dir = "processed_data"
os.makedirs(output_dir, exist_ok=True)

stopwords = set([
    '的', '了', '在', '是', '这部', '电影', '影片', '觉得', '一个', '非常',
    '这个', '其实', '还是', '有点', '但是', '不过', '可以', '没有', '什么',
    '不是', '自己', '就是', '最后', '真的', '一部', '居然', '如此', '怎么',
    '这样', '那种', '这些', '那些', '然后', '而已', '果然', '根本', '基本',
    '终于', '开始', '之后', '当时', '现在', '所以', '因为', '毫无', '只能',
    '完全', '我们', '大家', '那么', '不错', '很多', '周星驰', '不能', '你们',
    '真是', '只是', '还有', '知道', '这种', '这么', '不再', '出来', '时候',
    '简直', '星爷'
])
# 在原有停用词基础上，添加领域相关停用词
stopwords.update({
    '导演', '演员', '剧情', '感觉', '看到', '看到', '看到', '一部电影',
    '没有', '还是', '就是', '但是', '这个', '那个', '真的', '觉得',
})

# 读取数据
df = pd.read_csv(file_path)
high_star_df = df[df['Star'] >= 4]
low_star_df = df[df['Star'] <= 2]
high_comments = high_star_df[['Comment', 'Like']].values.tolist()
low_comments = low_star_df[['Comment', 'Like']].values.tolist()

# 1. 文本处理（只需运行一次，生成中间文件）
high_output_prefix = os.path.join(output_dir, "high_star")
low_output_prefix = os.path.join(output_dir, "low_star")

# 处理高分评论
process_and_save_comments(high_comments, stopwords, high_output_prefix)
# 处理低分评论
process_and_save_comments(low_comments, stopwords, low_output_prefix)

# 2. 词云生成（直接读取已保存的词频文件）
font_path = get_font_path()
generate_wordcloud_from_file(
    f"{high_output_prefix}_word_freq.csv",
    font_path,
    "高分电影观众讨论高频词.png"
)
generate_wordcloud_from_file(
    f"{low_output_prefix}_word_freq.csv",
    font_path,
    "低分电影观众讨论高频词.png"
)

# 3. LDA 分析（直接读取已保存的清洗文本）
analyze_lda_from_file(
    f"{high_output_prefix}_cleaned_texts.txt",
    "高分评论"
)
analyze_lda_from_file(
    f"{low_output_prefix}_cleaned_texts.txt",
    "低分评论"
)